package com.yao.yaooj.judge.codesandbox.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@Builder //使用构造器模式创建对象,简化了复杂对象的创建过程，提高了代码的可读性和开发效率。
//提供一个 builder() 方法用于创建构建器实例。
//提供一个 build() 方法用于从构建器生成最终的对象
//假设我们使用 ExecuteCodeRequest 类，@Builder 会生成类似以下代码：
//   ExecuteCodeRequest request = ExecuteCodeRequest.builder()
//       .inputList(List.of("input1", "input2"))
//       .code("public class Test {}")
//       .language("Java")
//       .build();

@NoArgsConstructor //给这个类设置一个无参的构造条件
@AllArgsConstructor //给这个类设置一个全参的构造条件
/**
 * 假设类定义如下：
 * public class ExecuteCodeRequest {
 *     private String code;
 *     private String language;
 * }
 *  @NoArgsConstructor 和 @AllArgsConstructor 注解
 *  @NoArgsConstructor //给这个类设置一个无参的构造条件
 *  编译后会生成以下无参构造方法：
 *  public ExecuteCodeRequest() {
 * }
 *
 * @AllArgsConstructor //给这个类设置一个全参的构造条件
 *编译后会生成以下全参构造方法：
 * public ExecuteCodeRequest(String code, String language) {
 *     this.code = code;
 *     this.language = language;
 * }
 */
public class ExecuteCodeRequest {

    /**
     * 输入用例
     */
    private List<String> inputList;

    /**
     * 编程代码
     */
    private String code;

    /**
     * 编程语言
     */
    private String language;
}
